import util from './util.js' // 常用类库
let padLeftZero = (str) => {
    return ('00' + str).substr(str.length);
};
/**
 * @desc 日期/时间格式化
 * @param  {String} _time 需要格式化的时间字符串 如: '2018-11-16' 或者时间戳
 * @param {String} formatStr需要格式化的字符串,如 'yyyy-MM-dd' ,'yyyy年-MM月-dd日'等
 * @return {String} 返回格式化后的时间字符串
 * e.g: new Date().format("yyyy-MM-dd hh:mm:ss")
 */
 let formatDate= (_time, formatStr)=> {
	if (typeof(Date.prototype.formatDate) != 'function') {
		Date.prototype.formatDate = function(format) {
			var $1, o = {
				"M+": this.getMonth() + 1, // 月份，从0开始算
				"d+": this.getDate(), // 日期
				"h+": this.getHours(), // 小时
				"m+": this.getMinutes(), // 分钟
				"s+": this.getSeconds(), // 秒钟
				// 季度 quarter
				"q+": Math.floor((this.getMonth() + 3) / 3),
				"S": this.getMilliseconds() // 千秒
			};
			var key, value;

			if (/(y+)/.test(format)) {
				$1 = RegExp.$1,
					format = format.replace($1, String(this.getFullYear()).substr(4 - $1));
			}

			for (key in o) { // 如果没有指定该参数，则子字符串将延续到 stringvar 的最后。
				if (new RegExp("(" + key + ")").test(format)) {
					$1 = RegExp.$1,
						value = String(o[key]),
						value = $1.length == 1 ? value : ("00" + value).substr(value.length),
						format = format.replace($1, value);
				}
			}
			return format;
		};
	}
	if (formatStr && _time)
		return new Date(_time).formatDate(formatStr);

	return '';

}
/*  处理网络图片和本地图片地址   */
  const  reImg = (url)=> {
        //console.log()
        if (this.isEmpty(url)) {
            return "";
        }
        else if (!/(http|https):\/\/([\w.]+\/?)\S*/.test(url)) {
            return websiteConfigs.sourceUrl + url;
        } else {
            return url;
        }
    }
/*  价格保留两位小数并拆分成小数点左右两份  */
const splicePrice = (value) => {
    if (util.isEmpty(value)) {
        return "00";
    }
    let samllnub = parseFloat(value).toFixed(2);
    let b = samllnub.toString().split(".");
    return b;
}
/*  保留小数点后面n位  */
const numToFixeDotNum = (value,DotNum) => {
    value = value || 0;
    let realVal = parseFloat(value).toFixed(DotNum);
    return realVal;
}
/* 判断一个对像是否有属性  */
let objHasProperty=(obj)=>{
	var arr = Object.getOwnPropertyNames(obj);
	return arr.length == 0;
	
}
/*  把数组转成用特定符号链接的字符串 如： ['云南省','昆明市','西山区'] 用','转之后为: 云南省,昆明市,西山区  */
let arrayJoin = function(array,spliter){ 
	if(array instanceof Array)
	return array.join(spliter);
}
let timeDif = (timeStr)=> { // 计算时给定的时间和现在时间的差值

    //如果时间格式是正确的，那下面这一步转化时间格式就可以不用了
    let dateBegin = new Date(timeStr.replace(/-/g, "/")); //将-转化为/，使用new Date
    let dateEnd = new Date(); //获取当前时间
    let dateDiff = dateEnd.getTime() - dateBegin.getTime(); //时间差的毫秒数
    let dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000)); //计算出相差天数
    let yearDiff =Math.floor(dayDiff/360); // 计算相差年
    let leave1 = dateDiff % (24 * 3600 * 1000); //计算天数后剩余的毫秒数
    let hours = Math.floor(leave1 / (3600 * 1000)); //计算出小时数
    let monthDiff = Math.floor(dayDiff/60); // 计算相差月
    //计算相差分钟数
    let leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数
    let minutes = Math.floor(leave2 / (60 * 1000)); //计算相差分钟数
    //计算相差秒数
    let leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数
    let seconds = Math.round(leave3 / 1000);
    return {
        yearDiff: yearDiff, // 相差年
        dayDiff: dayDiff, // 相差天
        monthDiff: monthDiff, // 相差月份
        hours: hours, // 计算出小时数 
        minutes: minutes, // 计算相差分钟数
        seconds: seconds, // 计算相差秒数
        dateDiff: dateDiff, // 时间差的毫秒数
        leave1: leave1 // 计算天数后剩余的毫秒数
    }
}
/* json 转字符串 */
const jsonStringify=(o)=>{
        return JSON.stringify(o);
}

// 字符串拆分
let stringSplit = (str,splitor) => {
	return (str||'').split(splitor)
	}
/*  字符串的指定范围内替换为指定的字符，如13330210145变为13******145
  example: stringReplace('13330210145',[3,8],'*') 输出为：13******145
  */
let stringReplace  = (str,range,replaceStr)=>{
	str += '';
	let tempStr = '';
	for(let i = 0; i< str.length; i++){
		if(i >= range[0]-1 && i<=range[1]-1 ){
			tempStr += replaceStr;
		}else{
			tempStr += str[i]
		}
		
	}
	return tempStr;
	
}
let countTest = (a,b)=>{
	return a+b;
}
export { 
	formatDate, // 时间格式化
	splicePrice, // 价格拆分
	 numToFixeDotNum, // 保留小数点后面几位
	 timeDif, // 计算以前的某个时间距离现在已经有多少年/月/天/时/分/秒
	 jsonStringify, // json 转化成字符串
	 arrayJoin, // 数组转化成某个字符相隔的字符串
	 stringSplit, // 字符串拆分
	 reImg, // 解决图片网络地址和本地地址
	 stringReplace, // 字符串的指定范围内替换为指定的字符，如13330210145变为13******145
	 countTest,
	 }
